package com.learn.hibernatevalidator.chapter06.basic;

import jakarta.validation.ConstraintValidator;
import jakarta.validation.ConstraintValidatorContext;

/**
 * @author: liyf
 * @create: 2025-01-09 22:47
 **/
public class CheckCaseValidator implements ConstraintValidator<CheckCase, String> {

    private CaseMode caseMode;

    @Override
    public void initialize(CheckCase constraintAnnotation) {
        this.caseMode = constraintAnnotation.value();
    }

    @Override
    public boolean isValid(String value, ConstraintValidatorContext context) {
        if (value == null) {
            return true;
        }

//        if (caseMode == CaseMode.UPPER) {
//            return value.toUpperCase().equals(value);
//        } else {
//            return value.toLowerCase().equals(value);
//        }

        boolean isValid;

        if (caseMode == CaseMode.UPPER) {
            isValid = value.toUpperCase().equals(value);
        } else {
            isValid = value.toLowerCase().equals(value);
        }

//        if (!isValid){
//            // 禁用默认的错误消息
//            context.disableDefaultConstraintViolation();
//            // 使用指定的消息模板添加自定义错误消息
//            context.buildConstraintViolationWithTemplate(
//                    "Error")
//                    // 调用addConstraintViolation()来添加每个配置的约束违规。只有在此之后，新的约束违规才会被创建。
//                    .addConstraintViolation();
//        }

        return isValid;
    }
}
